package com.jiazhong.多态and转型.Test03and转型;

public class PolyDetail {
    public static void main(String[] args) {
        //#向上转型  编译类型（父类）=new 运行类型（子类）;
        Animal animal=new Cat();
        Object obj=new Cat();
        //向上转型：1.可以调用父类所有成员（需要尊师访问权限）
        //        2.但是不能调用子类特有成员，eg：catchMouse
        //        #.Reason：
        //        因为编译阶段决定可以调用的成员,
        //        而运行效果看子类的具体实现，即调用方法时按照子类开始查找方法
        //        animal.catchMouse();错误
        animal.eat();
        animal.run();
        animal.show();
        animal.sleep();



        //#向下转型    子类类型引用名=(子类类型) 父类引用;
        Cat cat=(Cat) animal;
        cat.catchMouse();
        Dog dog=(Dog) animal;
        System.out.println("ok");

    }
}
